package com.example.demo.cashier;

/**
 * @author luoqin
 *
 */
public class CashContext {
    private CashSuper cs;

    /**
     * 通过构造方法，传入具体的收费策略 注意参数不是具体的收费策略对象，而是一个字符串，表示收费类型
     * @param type
     */
    public CashContext(String type) {
        switch (type) {
            case "正常收费":
                // 将实例化具体策略的过程由客户端转移到Context类中，简单工厂的应用
                cs = new CashNormal();
                break;
            case "满100返10":
                cs = new CashReturn("100", "10");
                break;
            case "打8折":
                cs = new CashRebate("0.8");
                break;
        }
    }
    public double getResult(double money) {
        // 根据收费策略的不同，获得计算结果
        return cs.acceptCash(money);
    }
}
